package com.hugang.threadcreate;

/**
 * 线程创建方法一：继承Thread类
 * 1）创建子类继承Thread
 * 2）子类重写run()方法
 * 3）创建子类的对象
 * 4）调用子类对象的start()方法:
 * a、启动当前线程
 * b、调用当前线程的run方法
 *
 * @author hg
 * @date 2020/6/14 15:05
 */
public class ThreadTest {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        MyThread myThread2 = new MyThread();
        //问题1：不能通过调用run()方式启动线程。
        myThread.run();
        myThread.start();
        //问题2：不能重复调用一个同一个线程的start()方法，会报错：IllegalThreadStateException，需要重新创建一个线程对象，再去调用此对象的start()方法
        myThread2.start();
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 1) {
                System.out.println(Thread.currentThread().getName() + ":" + i + "**************");
            }
        }
        //创建Thread类的匿名子类的方式启动线程
        new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    if (i % 2 == 0) {
                        System.out.println(Thread.currentThread().getName() + ":--------" + i);
                    }
                }
            }
        }.start();

    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
        }
    }
}